Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: change serialization method for extra_data #1442

Merged
merged 3 commits into from
Sep 21, 2023

Conversation

driftluo
Copy link
Contributor

What this PR does / why we need it?

This PR modified the serialization method of extra_data, fixed index 0 to be occupied by hardfork, and retained the possibility of using other data in the future

What is the impact of this PR?

No Breaking Change

PR relation:

  • Ref #
CI Settings

CI Usage

Tip: Check the CI you want to run below, and then comment /run-ci.

CI Switch

  • E2E Tests
  • Web3 Compatible Tests
  • OCT 1-5 And 12-15
  • OCT 6-10
  • OCT 11
  • OCT 16-19
  • v3 Core Tests

CI Description

CI Name Description
Chaos CI Test the liveness and robustness of Axon under terrible network condition
Cargo Clippy Run cargo clippy --all --all-targets --all-features
Coverage Test Get the unit test coverage report
E2E Test Run end-to-end test to check interfaces
Code Format Run cargo +nightly fmt --all -- --check and cargo sort -gwc
Web3 Compatible Test Test the Web3 compatibility of Axon
v3 Core Test Run the compatibility tests provided by Uniswap V3
OCT 1-5 | 6-10 | 11 | 12-15 | 16-19 Run the compatibility tests provided by OpenZeppelin

@driftluo driftluo requested a review from a team as a code owner September 20, 2023 10:26
@driftluo driftluo requested review from jjyr, ashuralyk and KaoImin and removed request for jjyr and ashuralyk September 20, 2023 10:26
@Flouse Flouse linked an issue Sep 20, 2023 that may be closed by this pull request
Flouse
Flouse previously requested changes Sep 20, 2023
Copy link
Contributor

@Flouse Flouse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@driftluo driftluo force-pushed the change-extra-serialization branch 3 times, most recently from b5498d2 to a615c94 Compare September 20, 2023 14:41
@driftluo driftluo force-pushed the change-extra-serialization branch from a615c94 to 97489d9 Compare September 20, 2023 14:50
@driftluo driftluo force-pushed the change-extra-serialization branch from 2aec17b to 474debb Compare September 20, 2023 15:18
@Flouse
Copy link
Contributor

Flouse commented Sep 21, 2023

Test on a single Axon node

// Request
curl -X POST https://special-trout-xrw6p77gjf6q7g-8000.app.github.dev/ \
  --header 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x2", true],"id":1}'

Block 0

{"jsonrpc":"2.0","result":{"hash":"0xc4723396dab95f64aca4a808e29aa4fbb9d7ca113b561dbaf5dc2df7bb4a72e9","parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","author":"0x0000000000000000000000000000000000000000","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x601bd874d41eb9adb32021ee3ab934e0481065c58abfe7e757e33fb01be18dd5","transactionsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","receiptsRoot":"0x8544b530238201f1620b139861a6841040b37f78f8bdae8736ef5cec474e979b","number":"0x0","gasUsed":"0x0","gasLimit":"0x0",
"extraData":["0xa3e280a00000000000000000000000000000000000000000000000000000000000000000"],
"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","timestamp":"0x641d844f","difficulty":"0x1","totalDifficulty":"0x0","sealFields":[],"baseFeePerGas":"0x539","uncles":[],"transactions":[{"type":"0x2","blockNumber":"0x0","blockHash":"0xc4723396dab95f64aca4a808e29aa4fbb9d7ca113b561dbaf5dc2df7bb4a72e9","hash":"0x5fbdb316eb4788e30ec62cbb5f60e2cf79a7a5162018af715187376e7ff448af","nonce":"0x0","transactionIndex":"0x0","from":"0x8ab0cf264df99d83525e9e11c7e4db01558ae1b1","to":null,"value":"0x0","gas":"0x1c9c380","gasPrice":"0x539","maxFeePerGas":"0x539","maxPriorityFeePerGas":"0x539","raw":"0x02f930a08441786f6e80820539808401c9c3808080b9304860806040523480156200001157600080fd5b5060405162002f6838038062002f6883398181016040528101906200003791906200044f565b828281600390805190602001906200005192919062000316565b5080600490805190602001906200006a92919062000316565b5050506200008d62000081620000d560201b60201c565b620000dd60201b60201c565b620000b16000801b620000a5620000d560201b60201c565b620001a360201b60201c565b80600660146101000a81548160ff021916908360ff1602179055505050506200066e565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001b58282620001b960201b60201c565b5050565b620001cb8282620002ab60201b60201c565b620002a75760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200024c620000d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054620003249062000579565b90600052602060002090601f01602090048101928262000348576000855562000394565b82601f106200036357805160ff191683800117855562000394565b8280016001018555821562000394579182015b828111156200039357825182559160200191906001019062000376565b5b509050620003a39190620003a7565b5090565b5b80821115620003c2576000816000905550600101620003a8565b5090565b6000620003dd620003d78462000500565b620004d7565b905082815260208101848484011115620003f657600080fd5b6200040384828562000543565b509392505050565b600082601f8301126200041d57600080fd5b81516200042f848260208601620003c6565b91505092915050565b600081519050620004498162000654565b92915050565b6000806000606084860312156200046557600080fd5b600084015167ffffffffffffffff8111156200048057600080fd5b6200048e868287016200040b565b935050602084015167ffffffffffffffff811115620004ac57600080fd5b620004ba868287016200040b565b9250506040620004cd8682870162000438565b9150509250925092565b6000620004e3620004f6565b9050620004f18282620005af565b919050565b6000604051905090565b600067ffffffffffffffff8211156200051e576200051d62000614565b5b620005298262000643565b9050602081019050919050565b600060ff82169050919050565b60005b838110156200056357808201518184015260208101905062000546565b8381111562000573576000848401525b50505050565b600060028204905060018216806200059257607f821691505b60208210811415620005a957620005a8620005e5565b5b50919050565b620005ba8262000643565b810181811067ffffffffffffffff82111715620005dc57620005db62000614565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6200065f8162000536565b81146200066b57600080fd5b50565b6128ea806200067e6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c3578063a457c2d71161007c578063a457c2d7146103db578063a9059cbb1461040b578063d547741f1461043b578063dd62ed3e14610457578063ec87621c14610487578063f2fde38b146104a557610158565b8063715018a61461032b5780638da5cb5b1461033557806391d148541461035357806395d89b41146103835780639dc29fac146103a1578063a217fddf146103bd57610158565b80632f2ff15d116101155780632f2ff15d14610259578063313ce5671461027557806336568abe1461029357806339509351146102af57806340c10f19146102df57806370a08231146102fb57610158565b806301ffc9a71461015d57806306fdde031461018d578063095ea7b3146101ab57806318160ddd146101db57806323b872dd146101f9578063248a9ca314610229575b600080fd5b61017760048036038101906101729190611c07565b6104c1565b6040516101849190611f6a565b60405180910390f35b61019561053b565b6040516101a29190611fa0565b60405180910390f35b6101c560048036038101906101c09190611b66565b6105cd565b6040516101d29190611f6a565b60405180910390f35b6101e36105f0565b6040516101f09190612182565b60405180910390f35b610213600480360381019061020e9190611b17565b6105fa565b6040516102209190611f6a565b60405180910390f35b610243600480360381019061023e9190611ba2565b610629565b6040516102509190611f85565b60405180910390f35b610273600480360381019061026e9190611bcb565b610649565b005b61027d61066a565b60405161028a919061219d565b60405180910390f35b6102ad60048036038101906102a89190611bcb565b610681565b005b6102c960048036038101906102c49190611b66565b610704565b6040516102d69190611f6a565b60405180910390f35b6102f960048036038101906102f49190611b66565b61073b565b005b61031560048036038101906103109190611ab2565b610774565b6040516103229190612182565b60405180910390f35b6103336107bc565b005b61033d6107d0565b60405161034a9190611f4f565b60405180910390f35b61036d60048036038101906103689190611bcb565b6107fa565b60405161037a9190611f6a565b60405180910390f35b61038b610865565b6040516103989190611fa0565b60405180910390f35b6103bb60048036038101906103b69190611b66565b6108f7565b005b6103c5610930565b6040516103d29190611f85565b60405180910390f35b6103f560048036038101906103f09190611b66565b610937565b6040516104029190611f6a565b60405180910390f35b61042560048036038101906104209190611b66565b6109ae565b6040516104329190611f6a565b60405180910390f35b61045560048036038101906104509190611bcb565b6109d1565b005b610471600480360381019061046c9190611adb565b6109f2565b60405161047e9190612182565b60405180910390f35b61048f610a79565b60405161049c9190611f85565b60405180910390f35b6104bf60048036038101906104ba9190611ab2565b610a9d565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610534575061053382610b21565b5b9050919050565b60606003805461054a906123ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610576906123ab565b80156105c35780601f10610598576101008083540402835291602001916105c3565b820191906000526020600020905b8154815290600101906020018083116105a657829003601f168201915b5050505050905090565b6000806105d8610b8b565b90506105e5818585610b93565b600191505092915050565b6000600254905090565b600080610605610b8b565b9050610612858285610d5e565b61061d858585610dea565b60019150509392505050565b600060056000838152602001908152602001600020600101549050919050565b61065282610629565b61065b8161106b565b610665838361107f565b505050565b6000600660149054906101000a900460ff16905090565b610689610b8b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ed90612142565b60405180910390fd5b6107008282611160565b5050565b60008061070f610b8b565b905061073081858561072185896109f2565b61072b91906121df565b610b93565b600191505092915050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086107658161106b565b61076f8383611242565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107c46113a2565b6107ce6000611420565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060048054610874906123ab565b80601f01602080910402602001604051908101604052809291908181526020018280546108a0906123ab565b80156108ed5780601f106108c2576101008083540402835291602001916108ed565b820191906000526020600020905b8154815290600101906020018083116108d057829003601f168201915b5050505050905090565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086109218161106b565b61092b83836114e6565b505050565b6000801b81565b600080610942610b8b565b9050600061095082866109f2565b905083811015610995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098c90612122565b60405180910390fd5b6109a28286868403610b93565b60019250505092915050565b6000806109b9610b8b565b90506109c6818585610dea565b600191505092915050565b6109da82610629565b6109e38161106b565b6109ed8383611160565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b610aa56113a2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c90612022565b60405180910390fd5b610b1e81611420565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa90612102565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a90612042565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d519190612182565b60405180910390a3505050565b6000610d6a84846109f2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610de45781811015610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90612062565b60405180910390fd5b610de38484848403610b93565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e51906120e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190611fe2565b60405180910390fd5b610ed58383836116bd565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5290612082565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fee91906121df565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110529190612182565b60405180910390a36110658484846116c2565b50505050565b61107c81611077610b8b565b6116c7565b50565b61108982826107fa565b61115c5760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611101610b8b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61116a82826107fa565b1561123e5760006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111e3610b8b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a990612162565b60405180910390fd5b6112be600083836116bd565b80600260008282546112d091906121df565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461132591906121df565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161138a9190612182565b60405180910390a361139e600083836116c2565b5050565b6113aa610b8b565b73ffffffffffffffffffffffffffffffffffffffff166113c86107d0565b73ffffffffffffffffffffffffffffffffffffffff161461141e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611415906120a2565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d906120c2565b60405180910390fd5b611562826000836116bd565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90612002565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461163f919061228f565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116a49190612182565b60405180910390a36116b8836000846116c2565b505050565b505050565b505050565b6116d182826107fa565b611760576116f68173ffffffffffffffffffffffffffffffffffffffff166014611764565b6117048360001c6020611764565b604051602001611715929190611f15565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117579190611fa0565b60405180910390fd5b5050565b6060600060028360026117779190612235565b61178191906121df565b67ffffffffffffffff8111156117c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156117f25781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611850577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106118da577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261191a9190612235565b61192491906121df565b90505b6001811115611a10577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061198c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b8282815181106119c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611a0990612381565b9050611927565b5060008414611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b90611fc2565b60405180910390fd5b8091505092915050565b600081359050611a6d81612858565b92915050565b600081359050611a828161286f565b92915050565b600081359050611a9781612886565b92915050565b600081359050611aac8161289d565b92915050565b600060208284031215611ac457600080fd5b6000611ad284828501611a5e565b91505092915050565b60008060408385031215611aee57600080fd5b6000611afc85828601611a5e565b9250506020611b0d85828601611a5e565b9150509250929050565b600080600060608486031215611b2c57600080fd5b6000611b3a86828701611a5e565b9350506020611b4b86828701611a5e565b9250506040611b5c86828701611a9d565b9150509250925092565b60008060408385031215611b7957600080fd5b6000611b8785828601611a5e565b9250506020611b9885828601611a9d565b9150509250929050565b600060208284031215611bb457600080fd5b6000611bc284828501611a73565b91505092915050565b60008060408385031215611bde57600080fd5b6000611bec85828601611a73565b9250506020611bfd85828601611a5e565b9150509250929050565b600060208284031215611c1957600080fd5b6000611c2784828501611a88565b91505092915050565b611c39816122c3565b82525050565b611c48816122d5565b82525050565b611c57816122e1565b82525050565b6000611c68826121b8565b611c7281856121c3565b9350611c8281856020860161234e565b611c8b8161243b565b840191505092915050565b6000611ca1826121b8565b611cab81856121d4565b9350611cbb81856020860161234e565b80840191505092915050565b6000611cd46020836121c3565b9150611cdf8261244c565b602082019050919050565b6000611cf76023836121c3565b9150611d0282612475565b604082019050919050565b6000611d1a6022836121c3565b9150611d25826124c4565b604082019050919050565b6000611d3d6026836121c3565b9150611d4882612513565b604082019050919050565b6000611d606022836121c3565b9150611d6b82612562565b604082019050919050565b6000611d83601d836121c3565b9150611d8e826125b1565b602082019050919050565b6000611da66026836121c3565b9150611db1826125da565b604082019050919050565b6000611dc96020836121c3565b9150611dd482612629565b602082019050919050565b6000611dec6021836121c3565b9150611df782612652565b604082019050919050565b6000611e0f6025836121c3565b9150611e1a826126a1565b604082019050919050565b6000611e326024836121c3565b9150611e3d826126f0565b604082019050919050565b6000611e556017836121d4565b9150611e608261273f565b601782019050919050565b6000611e786025836121c3565b9150611e8382612768565b604082019050919050565b6000611e9b6011836121d4565b9150611ea6826127b7565b601182019050919050565b6000611ebe602f836121c3565b9150611ec9826127e0565b604082019050919050565b6000611ee1601f836121c3565b9150611eec8261282f565b602082019050919050565b611f0081612337565b82525050565b611f0f81612341565b82525050565b6000611f2082611e48565b9150611f2c8285611c96565b9150611f3782611e8e565b9150611f438284611c96565b91508190509392505050565b6000602082019050611f646000830184611c30565b92915050565b6000602082019050611f7f6000830184611c3f565b92915050565b6000602082019050611f9a6000830184611c4e565b92915050565b60006020820190508181036000830152611fba8184611c5d565b905092915050565b60006020820190508181036000830152611fdb81611cc7565b9050919050565b60006020820190508181036000830152611ffb81611cea565b9050919050565b6000602082019050818103600083015261201b81611d0d565b9050919050565b6000602082019050818103600083015261203b81611d30565b9050919050565b6000602082019050818103600083015261205b81611d53565b9050919050565b6000602082019050818103600083015261207b81611d76565b9050919050565b6000602082019050818103600083015261209b81611d99565b9050919050565b600060208201905081810360008301526120bb81611dbc565b9050919050565b600060208201905081810360008301526120db81611ddf565b9050919050565b600060208201905081810360008301526120fb81611e02565b9050919050565b6000602082019050818103600083015261211b81611e25565b9050919050565b6000602082019050818103600083015261213b81611e6b565b9050919050565b6000602082019050818103600083015261215b81611eb1565b9050919050565b6000602082019050818103600083015261217b81611ed4565b9050919050565b60006020820190506121976000830184611ef7565b92915050565b60006020820190506121b26000830184611f06565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006121ea82612337565b91506121f583612337565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561222a576122296123dd565b5b828201905092915050565b600061224082612337565b915061224b83612337565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612284576122836123dd565b5b828202905092915050565b600061229a82612337565b91506122a583612337565b9250828210156122b8576122b76123dd565b5b828203905092915050565b60006122ce82612317565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561236c578082015181840152602081019050612351565b8381111561237b576000848401525b50505050565b600061238c82612337565b915060008214156123a05761239f6123dd565b5b600182039050919050565b600060028204905060018216806123c357607f821691505b602082108114156123d7576123d661240c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b612861816122c3565b811461286c57600080fd5b50565b612878816122e1565b811461288357600080fd5b50565b61288f816122eb565b811461289a57600080fd5b50565b6128a681612337565b81146128b157600080fd5b5056fea2646970667358221220ea47e4efe0a3c37dd62f6ab43e2d14393d14b0a0a6c9777ec0fda51cd6d0be3264736f6c63430008040033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000477434b4200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000477434b4200000000000000000000000000000000000000000000000000000000c080a0c2cd052c3194561a0e31ef66d962c20438faf2f0e3af6d60adfad88f4110c1aea00eae386b0aa266e8443d6fe1fff204e1f14a9e9b7832175674ce265e2deccb0a","input":"0x60806040523480156200001157600080fd5b5060405162002f6838038062002f6883398181016040528101906200003791906200044f565b828281600390805190602001906200005192919062000316565b5080600490805190602001906200006a92919062000316565b5050506200008d62000081620000d560201b60201c565b620000dd60201b60201c565b620000b16000801b620000a5620000d560201b60201c565b620001a360201b60201c565b80600660146101000a81548160ff021916908360ff1602179055505050506200066e565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001b58282620001b960201b60201c565b5050565b620001cb8282620002ab60201b60201c565b620002a75760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200024c620000d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054620003249062000579565b90600052602060002090601f01602090048101928262000348576000855562000394565b82601f106200036357805160ff191683800117855562000394565b8280016001018555821562000394579182015b828111156200039357825182559160200191906001019062000376565b5b509050620003a39190620003a7565b5090565b5b80821115620003c2576000816000905550600101620003a8565b5090565b6000620003dd620003d78462000500565b620004d7565b905082815260208101848484011115620003f657600080fd5b6200040384828562000543565b509392505050565b600082601f8301126200041d57600080fd5b81516200042f848260208601620003c6565b91505092915050565b600081519050620004498162000654565b92915050565b6000806000606084860312156200046557600080fd5b600084015167ffffffffffffffff8111156200048057600080fd5b6200048e868287016200040b565b935050602084015167ffffffffffffffff811115620004ac57600080fd5b620004ba868287016200040b565b9250506040620004cd8682870162000438565b9150509250925092565b6000620004e3620004f6565b9050620004f18282620005af565b919050565b6000604051905090565b600067ffffffffffffffff8211156200051e576200051d62000614565b5b620005298262000643565b9050602081019050919050565b600060ff82169050919050565b60005b838110156200056357808201518184015260208101905062000546565b8381111562000573576000848401525b50505050565b600060028204905060018216806200059257607f821691505b60208210811415620005a957620005a8620005e5565b5b50919050565b620005ba8262000643565b810181811067ffffffffffffffff82111715620005dc57620005db62000614565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6200065f8162000536565b81146200066b57600080fd5b50565b6128ea806200067e6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c3578063a457c2d71161007c578063a457c2d7146103db578063a9059cbb1461040b578063d547741f1461043b578063dd62ed3e14610457578063ec87621c14610487578063f2fde38b146104a557610158565b8063715018a61461032b5780638da5cb5b1461033557806391d148541461035357806395d89b41146103835780639dc29fac146103a1578063a217fddf146103bd57610158565b80632f2ff15d116101155780632f2ff15d14610259578063313ce5671461027557806336568abe1461029357806339509351146102af57806340c10f19146102df57806370a08231146102fb57610158565b806301ffc9a71461015d57806306fdde031461018d578063095ea7b3146101ab57806318160ddd146101db57806323b872dd146101f9578063248a9ca314610229575b600080fd5b61017760048036038101906101729190611c07565b6104c1565b6040516101849190611f6a565b60405180910390f35b61019561053b565b6040516101a29190611fa0565b60405180910390f35b6101c560048036038101906101c09190611b66565b6105cd565b6040516101d29190611f6a565b60405180910390f35b6101e36105f0565b6040516101f09190612182565b60405180910390f35b610213600480360381019061020e9190611b17565b6105fa565b6040516102209190611f6a565b60405180910390f35b610243600480360381019061023e9190611ba2565b610629565b6040516102509190611f85565b60405180910390f35b610273600480360381019061026e9190611bcb565b610649565b005b61027d61066a565b60405161028a919061219d565b60405180910390f35b6102ad60048036038101906102a89190611bcb565b610681565b005b6102c960048036038101906102c49190611b66565b610704565b6040516102d69190611f6a565b60405180910390f35b6102f960048036038101906102f49190611b66565b61073b565b005b61031560048036038101906103109190611ab2565b610774565b6040516103229190612182565b60405180910390f35b6103336107bc565b005b61033d6107d0565b60405161034a9190611f4f565b60405180910390f35b61036d60048036038101906103689190611bcb565b6107fa565b60405161037a9190611f6a565b60405180910390f35b61038b610865565b6040516103989190611fa0565b60405180910390f35b6103bb60048036038101906103b69190611b66565b6108f7565b005b6103c5610930565b6040516103d29190611f85565b60405180910390f35b6103f560048036038101906103f09190611b66565b610937565b6040516104029190611f6a565b60405180910390f35b61042560048036038101906104209190611b66565b6109ae565b6040516104329190611f6a565b60405180910390f35b61045560048036038101906104509190611bcb565b6109d1565b005b610471600480360381019061046c9190611adb565b6109f2565b60405161047e9190612182565b60405180910390f35b61048f610a79565b60405161049c9190611f85565b60405180910390f35b6104bf60048036038101906104ba9190611ab2565b610a9d565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610534575061053382610b21565b5b9050919050565b60606003805461054a906123ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610576906123ab565b80156105c35780601f10610598576101008083540402835291602001916105c3565b820191906000526020600020905b8154815290600101906020018083116105a657829003601f168201915b5050505050905090565b6000806105d8610b8b565b90506105e5818585610b93565b600191505092915050565b6000600254905090565b600080610605610b8b565b9050610612858285610d5e565b61061d858585610dea565b60019150509392505050565b600060056000838152602001908152602001600020600101549050919050565b61065282610629565b61065b8161106b565b610665838361107f565b505050565b6000600660149054906101000a900460ff16905090565b610689610b8b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ed90612142565b60405180910390fd5b6107008282611160565b5050565b60008061070f610b8b565b905061073081858561072185896109f2565b61072b91906121df565b610b93565b600191505092915050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086107658161106b565b61076f8383611242565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107c46113a2565b6107ce6000611420565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060048054610874906123ab565b80601f01602080910402602001604051908101604052809291908181526020018280546108a0906123ab565b80156108ed5780601f106108c2576101008083540402835291602001916108ed565b820191906000526020600020905b8154815290600101906020018083116108d057829003601f168201915b5050505050905090565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086109218161106b565b61092b83836114e6565b505050565b6000801b81565b600080610942610b8b565b9050600061095082866109f2565b905083811015610995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098c90612122565b60405180910390fd5b6109a28286868403610b93565b60019250505092915050565b6000806109b9610b8b565b90506109c6818585610dea565b600191505092915050565b6109da82610629565b6109e38161106b565b6109ed8383611160565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b610aa56113a2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c90612022565b60405180910390fd5b610b1e81611420565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa90612102565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a90612042565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d519190612182565b60405180910390a3505050565b6000610d6a84846109f2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610de45781811015610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90612062565b60405180910390fd5b610de38484848403610b93565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e51906120e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190611fe2565b60405180910390fd5b610ed58383836116bd565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5290612082565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fee91906121df565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110529190612182565b60405180910390a36110658484846116c2565b50505050565b61107c81611077610b8b565b6116c7565b50565b61108982826107fa565b61115c5760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611101610b8b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61116a82826107fa565b1561123e5760006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111e3610b8b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a990612162565b60405180910390fd5b6112be600083836116bd565b80600260008282546112d091906121df565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461132591906121df565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161138a9190612182565b60405180910390a361139e600083836116c2565b5050565b6113aa610b8b565b73ffffffffffffffffffffffffffffffffffffffff166113c86107d0565b73ffffffffffffffffffffffffffffffffffffffff161461141e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611415906120a2565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d906120c2565b60405180910390fd5b611562826000836116bd565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90612002565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461163f919061228f565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116a49190612182565b60405180910390a36116b8836000846116c2565b505050565b505050565b505050565b6116d182826107fa565b611760576116f68173ffffffffffffffffffffffffffffffffffffffff166014611764565b6117048360001c6020611764565b604051602001611715929190611f15565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117579190611fa0565b60405180910390fd5b5050565b6060600060028360026117779190612235565b61178191906121df565b67ffffffffffffffff8111156117c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156117f25781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611850577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106118da577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261191a9190612235565b61192491906121df565b90505b6001811115611a10577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061198c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b8282815181106119c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611a0990612381565b9050611927565b5060008414611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b90611fc2565b60405180910390fd5b8091505092915050565b600081359050611a6d81612858565b92915050565b600081359050611a828161286f565b92915050565b600081359050611a9781612886565b92915050565b600081359050611aac8161289d565b92915050565b600060208284031215611ac457600080fd5b6000611ad284828501611a5e565b91505092915050565b60008060408385031215611aee57600080fd5b6000611afc85828601611a5e565b9250506020611b0d85828601611a5e565b9150509250929050565b600080600060608486031215611b2c57600080fd5b6000611b3a86828701611a5e565b9350506020611b4b86828701611a5e565b9250506040611b5c86828701611a9d565b9150509250925092565b60008060408385031215611b7957600080fd5b6000611b8785828601611a5e565b9250506020611b9885828601611a9d565b9150509250929050565b600060208284031215611bb457600080fd5b6000611bc284828501611a73565b91505092915050565b60008060408385031215611bde57600080fd5b6000611bec85828601611a73565b9250506020611bfd85828601611a5e565b9150509250929050565b600060208284031215611c1957600080fd5b6000611c2784828501611a88565b91505092915050565b611c39816122c3565b82525050565b611c48816122d5565b82525050565b611c57816122e1565b82525050565b6000611c68826121b8565b611c7281856121c3565b9350611c8281856020860161234e565b611c8b8161243b565b840191505092915050565b6000611ca1826121b8565b611cab81856121d4565b9350611cbb81856020860161234e565b80840191505092915050565b6000611cd46020836121c3565b9150611cdf8261244c565b602082019050919050565b6000611cf76023836121c3565b9150611d0282612475565b604082019050919050565b6000611d1a6022836121c3565b9150611d25826124c4565b604082019050919050565b6000611d3d6026836121c3565b9150611d4882612513565b604082019050919050565b6000611d606022836121c3565b9150611d6b82612562565b604082019050919050565b6000611d83601d836121c3565b9150611d8e826125b1565b602082019050919050565b6000611da66026836121c3565b9150611db1826125da565b604082019050919050565b6000611dc96020836121c3565b9150611dd482612629565b602082019050919050565b6000611dec6021836121c3565b9150611df782612652565b604082019050919050565b6000611e0f6025836121c3565b9150611e1a826126a1565b604082019050919050565b6000611e326024836121c3565b9150611e3d826126f0565b604082019050919050565b6000611e556017836121d4565b9150611e608261273f565b601782019050919050565b6000611e786025836121c3565b9150611e8382612768565b604082019050919050565b6000611e9b6011836121d4565b9150611ea6826127b7565b601182019050919050565b6000611ebe602f836121c3565b9150611ec9826127e0565b604082019050919050565b6000611ee1601f836121c3565b9150611eec8261282f565b602082019050919050565b611f0081612337565b82525050565b611f0f81612341565b82525050565b6000611f2082611e48565b9150611f2c8285611c96565b9150611f3782611e8e565b9150611f438284611c96565b91508190509392505050565b6000602082019050611f646000830184611c30565b92915050565b6000602082019050611f7f6000830184611c3f565b92915050565b6000602082019050611f9a6000830184611c4e565b92915050565b60006020820190508181036000830152611fba8184611c5d565b905092915050565b60006020820190508181036000830152611fdb81611cc7565b9050919050565b60006020820190508181036000830152611ffb81611cea565b9050919050565b6000602082019050818103600083015261201b81611d0d565b9050919050565b6000602082019050818103600083015261203b81611d30565b9050919050565b6000602082019050818103600083015261205b81611d53565b9050919050565b6000602082019050818103600083015261207b81611d76565b9050919050565b6000602082019050818103600083015261209b81611d99565b9050919050565b600060208201905081810360008301526120bb81611dbc565b9050919050565b600060208201905081810360008301526120db81611ddf565b9050919050565b600060208201905081810360008301526120fb81611e02565b9050919050565b6000602082019050818103600083015261211b81611e25565b9050919050565b6000602082019050818103600083015261213b81611e6b565b9050919050565b6000602082019050818103600083015261215b81611eb1565b9050919050565b6000602082019050818103600083015261217b81611ed4565b9050919050565b60006020820190506121976000830184611ef7565b92915050565b60006020820190506121b26000830184611f06565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006121ea82612337565b91506121f583612337565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561222a576122296123dd565b5b828201905092915050565b600061224082612337565b915061224b83612337565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612284576122836123dd565b5b828202905092915050565b600061229a82612337565b91506122a583612337565b9250828210156122b8576122b76123dd565b5b828203905092915050565b60006122ce82612317565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561236c578082015181840152602081019050612351565b8381111561237b576000848401525b50505050565b600061238c82612337565b915060008214156123a05761239f6123dd565b5b600182039050919050565b600060028204905060018216806123c357607f821691505b602082108114156123d7576123d661240c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b612861816122c3565b811461286c57600080fd5b50565b612878816122e1565b811461288357600080fd5b50565b61288f816122eb565b811461289a57600080fd5b50565b6128a681612337565b81146128b157600080fd5b5056fea2646970667358221220ea47e4efe0a3c37dd62f6ab43e2d14393d14b0a0a6c9777ec0fda51cd6d0be3264736f6c63430008040033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000477434b4200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000477434b4200000000000000000000000000000000000000000000000000000000","publicKey":"0x1ddc35212b7fc7ff6685b17d91f77c972535aee5c7ae5684d3e72b986f08834bb6d9f0d2aadc50716cea7b59d5eadfc9366e348ed596b924f4e746247b673c57","accessList":[],"chainId":"0x41786f6e","v":"0x82f0deff","r":"0xc2cd052c3194561a0e31ef66d962c20438faf2f0e3af6d60adfad88f4110c1ae","s":"0xeae386b0aa266e8443d6fe1fff204e1f14a9e9b7832175674ce265e2deccb0a"},{"type":"0x2","blockNumber":"0x0","blockHash":"0xc4723396dab95f64aca4a808e29aa4fbb9d7ca113b561dbaf5dc2df7bb4a72e9","hash":"0x5dbfb4544a8ff47c37f2c007dc19f5d651c89e25035e542b7f82811b7f251e2f","nonce":"0x1","transactionIndex":"0x1","from":"0x8ab0cf264df99d83525e9e11c7e4db01558ae1b1","to":"0xffffffffffffffffffffffffffffffffffffff01","value":"0x0","gas":"0x1c9c380","gasPrice":"0x539","maxFeePerGas":"0x539","maxPriorityFeePerGas":"0x539","raw":"0x02f904108441786f6e01820539808401c9c38094ffffffffffffffffffffffffffffffffffffff0180b903a453ec79e6000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000004e2000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000003e7fffffc1800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001000000000000000000000000008ab0cf264df99d83525e9e11c7e4db01558ae1b1000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000030ac85bbb40347b6e06ac2dc2da1f75eece029cdc0ed2d456c457d27e288bfbfbcd4c5c19716e9b250134a0e76ce50fa22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021031ddc35212b7fc7ff6685b17d91f77c972535aee5c7ae5684d3e72b986f08834b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c080a0ea651a8bd414e28f44285c883f104c6a8542fd308e816c5e9bde811832109ff5a03071ad355a72005ed9ee3e02162490c9074469f11fd149b5c8b3b906de6e65f5","input":"0x53ec79e6000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000004e2000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000003e7fffffc1800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001000000000000000000000000008ab0cf264df99d83525e9e11c7e4db01558ae1b1000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000030ac85bbb40347b6e06ac2dc2da1f75eece029cdc0ed2d456c457d27e288bfbfbcd4c5c19716e9b250134a0e76ce50fa22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021031ddc35212b7fc7ff6685b17d91f77c972535aee5c7ae5684d3e72b986f08834b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","publicKey":"0x1ddc35212b7fc7ff6685b17d91f77c972535aee5c7ae5684d3e72b986f08834bb6d9f0d2aadc50716cea7b59d5eadfc9366e348ed596b924f4e746247b673c57","accessList":[],"chainId":"0x41786f6e","v":"0x82f0deff","r":"0xea651a8bd414e28f44285c883f104c6a8542fd308e816c5e9bde811832109ff5","s":"0x3071ad355a72005ed9ee3e02162490c9074469f11fd149b5c8b3b906de6e65f5"},{"type":"0x2","blockNumber":"0x0","blockHash":"0xc4723396dab95f64aca4a808e29aa4fbb9d7ca113b561dbaf5dc2df7bb4a72e9","hash":"0xdafc3ad080c6ab3667cdfb07b59532b89d805b60dfebb696648d583604ea0581","nonce":"0x2","transactionIndex":"0x2","from":"0x8ab0cf264df99d83525e9e11c7e4db01558ae1b1","to":"0xffffffffffffffffffffffffffffffffffffff01","value":"0x0","gas":"0x1c9c380","gasPrice":"0x539","maxFeePerGas":"0x539","maxPriorityFeePerGas":"0x539","raw":"0x02f904108441786f6e02820539808401c9c38094ffffffffffffffffffffffffffffffffffffff0180b903a453ec79e600000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000005f5e101000000000000000000000000000000000000000000000000000000000bebc200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000004e2000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000003e7fffffc1800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001000000000000000000000000008ab0cf264df99d83525e9e11c7e4db01558ae1b1000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000030ac85bbb40347b6e06ac2dc2da1f75eece029cdc0ed2d456c457d27e288bfbfbcd4c5c19716e9b250134a0e76ce50fa22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021031ddc35212b7fc7ff6685b17d91f77c972535aee5c7ae5684d3e72b986f08834b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c001a04e3798c611970e81c7ee47c748a114ae610779fadf660db0a260033ffd17bcdca071bb7fd13dc431840a6d9b9a492fff4ba9920e806feecfe387be4494af1ae053","input":"0x53ec79e600000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000005f5e101000000000000000000000000000000000000000000000000000000000bebc200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000004e2000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000003e7fffffc1800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001000000000000000000000000008ab0cf264df99d83525e9e11c7e4db01558ae1b1000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000030ac85bbb40347b6e06ac2dc2da1f75eece029cdc0ed2d456c457d27e288bfbfbcd4c5c19716e9b250134a0e76ce50fa22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021031ddc35212b7fc7ff6685b17d91f77c972535aee5c7ae5684d3e72b986f08834b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","publicKey":"0x1ddc35212b7fc7ff6685b17d91f77c972535aee5c7ae5684d3e72b986f08834bb6d9f0d2aadc50716cea7b59d5eadfc9366e348ed596b924f4e746247b673c57","accessList":[],"chainId":"0x41786f6e","v":"0x82f0df00","r":"0x4e3798c611970e81c7ee47c748a114ae610779fadf660db0a260033ffd17bcdc","s":"0x71bb7fd13dc431840a6d9b9a492fff4ba9920e806feecfe387be4494af1ae053"}],"size":"0x21f","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000"},"id":1}

Block 1

{"jsonrpc":"2.0","result":{"hash":"0x3ed6ee7493df69fcf14b3d71554cfc0039a21a2c3498f70e0cf85ecfdef4efce","parentHash":"0xc4723396dab95f64aca4a808e29aa4fbb9d7ca113b561dbaf5dc2df7bb4a72e9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","author":"0x8ab0cf264df99d83525e9e11c7e4db01558ae1b1","miner":"0x8ab0cf264df99d83525e9e11c7e4db01558ae1b1","stateRoot":"0xb0e37a2538703c8a44c2a080090d0de5c81757504eb61ddc795de83bbd4f5be6","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","number":"0x1","gasUsed":"0x0","gasLimit":"0x1c9c380",
"extraData":[],
"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000001000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","timestamp":"0x650b1970","difficulty":"0x1","totalDifficulty":"0x1","sealFields":[],"baseFeePerGas":"0x539","uncles":[],"transactions":[],"size":"0x1fe","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000"},"id":1}

Block 2

{"jsonrpc":"2.0","result":{"hash":"0xd52233d116e3db80b1a3239cdb723c4e0f15c4af831c549f5a1c0a43af989652","parentHash":"0x3ed6ee7493df69fcf14b3d71554cfc0039a21a2c3498f70e0cf85ecfdef4efce","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","author":"0x8ab0cf264df99d83525e9e11c7e4db01558ae1b1","miner":"0x8ab0cf264df99d83525e9e11c7e4db01558ae1b1","stateRoot":"0x59307433fc57d78971f0d404ec6c2e17cc15be20e4924c41a8a31b66a039e31d","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","number":"0x2","gasUsed":"0x0","gasLimit":"0x1c9c380",
"extraData":[],
"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000001000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","timestamp":"0x650b1973","difficulty":"0x1","totalDifficulty":"0x2","sealFields":[],"baseFeePerGas":"0x539","uncles":[],"transactions":[],"size":"0x261","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000"},"id":1}

@Flouse Flouse self-requested a review September 21, 2023 01:40
@KaoImin KaoImin enabled auto-merge September 21, 2023 06:56
@KaoImin KaoImin added this pull request to the merge queue Sep 21, 2023
Merged via the queue into main with commit 9a3cd4d Sep 21, 2023
20 checks passed
@driftluo driftluo deleted the change-extra-serialization branch September 21, 2023 07:34
@Flouse Flouse added t:feature and removed feature labels Nov 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

refactor the extra_data struct to accommodate future possibilities
4 participants